import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from datetime import datetime

# 创建一个时间列表
date_list = [
    datetime( 2016, 9, 1 ),
    datetime( 2016, 9, 10 ),
    datetime( 2017, 9, 1 ),
    datetime( 2017, 9, 20 ),
    datetime( 2017, 10, 1 ),
]

s1 = Series( np.random.rand( 5 ), index = date_list )
#print( s1 )
'''
2016-09-01    0.000676
2016-09-10    0.611028
2017-09-01    0.979523
2017-09-20    0.990161
2017-10-01    0.527922
dtype: float64
'''

# 对该时间列表的访问方法
print( s1[1] )
print( s1[datetime( 2016, 9, 10 )] )
print( s1["2016-9-10"] )
print( s1["20160910"] )
''' 返回值是一样的，
        1、可以使用位置信息访问。
        2、可以使用对象访问。
        3、直接按照index访问
        4、简化日期也可以
0.177153073968
0.177153073968
0.177153073968
0.177153073968
'''

# 对时间列表的访问技巧
print( s1["2017-09"] )
''' 
2017-09-01    0.242741
2017-09-20    0.789475
'''
print( s1["2016"] )
'''
2016-09-01    0.858346
2016-09-10    0.679261
'''

# date_range()的使用方法
date_list_new = pd.date_range( "2017-01-01", periods = 30 )
# print( date_list_new )
''' periods 是步长
    freg 默认是 D。
    如果选择是 W（周）的话，需要注意的是，周是从 周日 到 周六
    如果需要一周是从周一开始的，需要的参数是：W-MON 
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04',
               '2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08',
               '2017-01-09', '2017-01-10', '2017-01-11', '2017-01-12',
               '2017-01-13', '2017-01-14', '2017-01-15', '2017-01-16',
               '2017-01-17', '2017-01-18', '2017-01-19', '2017-01-20',
               '2017-01-21', '2017-01-22', '2017-01-23', '2017-01-24',
               '2017-01-25', '2017-01-26', '2017-01-27', '2017-01-28',
               '2017-01-29', '2017-01-30'],
              dtype='datetime64[ns]', freq='D')
'''
date_list_new = pd.date_range( "2016-01-01", periods = 100, freq = "5H" )
s1 = Series( np.random.rand( 100 ), index = date_list_new )
print( s1 )